
package Control;

import Database.ConexaoDB;
import Model.Usuario;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

public class Control_Usuario {
    
    Connection con = new ConexaoDB().conectar();
    PreparedStatement pstm;
    ResultSet rs;
    
    String cadastraUsuario = "INSERT INTO USUARIO(USUARIO_ID, USUARIO_FUNCIONARIO,"
            + "USUARIO_LOGIN, USUARIO_SENHA, USUARIO_NIVEL) VALUES(0,?,?,?,?)";
    
    String alteraUsuario = "UPDATE USUARIO SET USUARIO_FUNCIONARIO=?,"
            + "USUARIO_LOGIN=?, USUARIO_SENHA=?, USUARIO_NIVEL=? WHERE USUARIO_ID=?";
     
    String excluiUsuario = "DELETE FROM USUARIO WHERE USUARIO_ID=?";
    
    String consultaUsuarioCodigo = "SELECT * FROM USUARIO WHERE USUARIO_ID LIKE ?";
    
    String consultaUsuarioNome = "SELECT * FROM USUARIO WHERE USUARIO_FUNCIONARIO LIKE ?";
    
    String consultaUsuarioTodosNome = "SELECT * FROM USUARIO ORDER BY USUARIO_FUNCIONARIO";
    
    String consultaUsuarioTodosCodigo = "SELECT * FROM USUARIO ORDER BY USUARIO_ID";
    
      
    ConexaoDB BD = new ConexaoDB();
    
    
    public Control_Usuario(){ }                                
    
    public void cadastrarUsuario(Usuario usuario){
         try{
            pstm = BD.conectar().prepareStatement(cadastraUsuario);
            pstm.setString(1, usuario.getUsuario_funcionario());
            pstm.setString(2, usuario.getUsuario_login());
            pstm.setString(3, usuario.getUsuario_senha());
            pstm.setString(4, usuario.getUsuario_nivel());
            pstm.executeUpdate();
            BD.desconectar(con);
         }
         catch(Exception e){
               e.printStackTrace();   
            }
    }
    
    public void alterarUsuario(Usuario usuario){
         try{
            pstm = BD.conectar().prepareStatement(alteraUsuario);
            pstm.setString(1, usuario.getUsuario_funcionario());
            pstm.setString(2, usuario.getUsuario_login());
            pstm.setString(3, usuario.getUsuario_senha());
            pstm.setString(4, usuario.getUsuario_nivel());
            pstm.setInt(5, usuario.getUsuario_id());
            pstm.executeUpdate();
            BD.desconectar(con);
         }
         catch(Exception e){
               e.printStackTrace();   
            }
    }
    
    public void excluirUsuario(Usuario usuario){
         try{
            pstm = BD.conectar().prepareStatement(excluiUsuario);
            pstm.setInt(1, usuario.getUsuario_id());
            pstm.executeUpdate();
            BD.desconectar(con);
         }
         catch(Exception e){
               e.printStackTrace();   
            }
    }
    
    public java.util.List<Usuario> listarUsuarioCodigo(String codigo){
        java.util.List<Usuario> usuario = new ArrayList();
        try{
            pstm = BD.conectar().prepareStatement(consultaUsuarioCodigo);
            pstm.setString(1, codigo);
            rs = pstm.executeQuery();
            
            while (rs.next()){
                Usuario usu = new Usuario();
                usu.setUsuario_id(rs.getInt("usuario_id"));
                usu.setUsuario_funcionario(rs.getString("usuario_funcionario"));
                usu.setUsuario_login(rs.getString("usuario_login"));
                usu.setUsuario_senha(rs.getString("usuario_senha"));
                usu.setUsuario_nivel(rs.getString("usuario_nivel"));
                usuario.add(usu);
            }
            BD.desconectar(con);
        } catch(Exception e){
            e.printStackTrace();
        }
        return usuario;
    }
    
    public java.util.List<Usuario> listarUsuarioNome(String nome){
        java.util.List<Usuario> usuario = new ArrayList();
        try{
            pstm = BD.conectar().prepareStatement(consultaUsuarioNome);
            pstm.setString(1, nome);
            rs = pstm.executeQuery();
            
            while (rs.next()){
                Usuario usu = new Usuario();
                usu.setUsuario_id(rs.getInt("usuario_id"));
                usu.setUsuario_funcionario(rs.getString("usuario_funcionario"));
                usu.setUsuario_login(rs.getString("usuario_login"));
                usu.setUsuario_senha(rs.getString("usuario_senha"));
                usu.setUsuario_nivel(rs.getString("usuario_nivel"));
                usuario.add(usu);
            }
            BD.desconectar(con);
        } catch(Exception e){
            e.printStackTrace();
        }
        return usuario;
    }
    
    public java.util.List<Usuario> listarUsuarioTodosNome(){
        java.util.List<Usuario> usuario = new ArrayList();
        try{
            pstm = BD.conectar().prepareStatement(consultaUsuarioTodosNome);
            rs = pstm.executeQuery();
            
            while (rs.next()){
                Usuario usu = new Usuario();
                usu.setUsuario_id(rs.getInt("usuario_id"));
                usu.setUsuario_funcionario(rs.getString("usuario_funcionario"));
                usu.setUsuario_login(rs.getString("usuario_login"));
                usu.setUsuario_senha(rs.getString("usuario_senha"));
                usu.setUsuario_nivel(rs.getString("usuario_nivel"));
                usuario.add(usu);
            }
            BD.desconectar(con);
        } catch(Exception e){
            e.printStackTrace();
        }
        return usuario;
    }
    
    public java.util.List<Usuario> listarUsuarioTodosCodigo(){
        java.util.List<Usuario> usuario = new ArrayList();
        try{
            pstm = BD.conectar().prepareStatement(consultaUsuarioTodosCodigo);
            rs = pstm.executeQuery();
            
            while (rs.next()){
                Usuario usu = new Usuario();
                usu.setUsuario_id(rs.getInt("usuario_id"));
                usu.setUsuario_funcionario(rs.getString("usuario_funcionario"));
                usu.setUsuario_login(rs.getString("usuario_login"));
                usu.setUsuario_senha(rs.getString("usuario_senha"));
                usu.setUsuario_nivel(rs.getString("usuario_nivel"));
                usuario.add(usu);
            }
            BD.desconectar(con);
        } catch(Exception e){
            e.printStackTrace();
        }
        return usuario;
    }
        
}
